#include <iostream>
using namespace std;
const int N = 2e5 + 10;
int main() {
	/*差分数组*/
	//从下标1开始 buff[i] > 0 表示 i时刻有增益buff 
	int buff[N] = {0};
	//从下标1开始 debuff[i] > 0 表示 i时刻有减益buff 
	int debuff[N] = {0};
	
	//buff次数， buff 持续时间 
	int n, time;
	scanf("%d %d", &n, &time);
	
	//buff类型，出现时间点 
	int type, timePoint;
	
	//记录最后一个增益持续的最后时间点（maxBuff - 1） 
	int maxBuff = 0;
	for(int i = 1; i <= n; i++){
		scanf("%d %d", &type, &timePoint);
		if(type == 1){	//增益Buff 
			buff[timePoint]++;
			buff[timePoint + time]--;
			maxBuff = max(maxBuff, timePoint + time);
		}else{//type = 2	, 减益Buff 
			debuff[timePoint]++;
			debuff[timePoint + time]--;
		}
	}
	int positive = 0, negative = 0;
	int res = 0;
	for(int i = 1; i < maxBuff; i++){
		positive += buff[i];
		negative += debuff[i];
		//有buff无debuff
		if(positive && !negative) res++;
	}
	printf("%d", res);
	return 0;
}

/*
小A是游戏爱好者，他玩的一款游戏中有各种的Buff和Debuff。

Buff：就是提升自身能力的Buff，也就是增益Buff；

Debuff：就是削弱自身能力的Buff，也就是减益Buff；

在游戏中，任何时刻，系统可能会给小A随机加个Buff或者Debuff，然后它会持续t秒,

例如：如果一个Buff在第3秒出现，持续3秒，那么小A在第3,4,5秒时身上有Buff。

现在已经知道小A在一局游戏中会受到n个Buff，并且我们知道他的Buff种类和出现时间，以及持续时间。

小A想知道，自己总共有多少秒，身上只有Buff且没有Debuff？


输入格式
第一行输入两个正整数 n 和 t ，用空格隔开。分别代表Buff/Debuff的数量、每个Buff/Debuff的持续时间。

接下来n行，每一行有两个数字，第i行的数字分别为 xi，ai。

xi代表Buff种类，若xi为1，则为Buff（增益Buff），若xi为2，则为Debuff（减益Buff）。ai代表每个Buff/Debuff的出现时刻。

输出格式
小A身上只有Buff且没有Debuff的总秒数。

数据范围
1 ≤ n,t, ai ≤ 100000,

1<=xi<=2

输入数据 
3 5
1 1
1 7
2 4

输出数据 
6

*/
